package models;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import play.libs.Json;
public class UserStoryHandler {
static String baseUrl = "./public/userStories/";
public static String loadAllUserStories() {
List<UserStory> userStories = new ArrayList<UserStory>();
final File folder = new File(baseUrl);
String tot = "[";
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
System.out.println("undersöker mapp:"+fileEntry.getName());
for (final File fileEntry2 : fileEntry.listFiles()) {
// System.out.println("fileEntry2 is file compare: "+fileEntry2.getName());
if (fileEntry2.getName().equals("userStory.json")) {
// System.out.println("existing user story:" +
// fileEntry.getName());
// userStories.add(new
// UserStory(fileEntry.getName(),getTotalFile(fileEntry2)));
ObjectMapper mapper = new ObjectMapper();
ObjectNode userStory = (ObjectNode) Json
.parse(getTotalFile(fileEntry2));
System.out.println("userstory:" +Json.toJson(userStory) );
System.out.println("uuid:"+userStory.get("uuid").asText());
// mapper.writeValue(arg0, userStory);
// System.out.println("||||||||||||"+userStory.get("uuid").asText()+"|<|");
getTests(userStory.putArray("tests"),
userStory.get("uuid").asText());
// System.out.println(Json.toJson(userStory));
tot += Json.toJson(userStory) + ",";
}
}
}
}
tot = tot.substring(0, tot.length() - 1);
tot += "]";
return tot;
}
public static void getTests(ArrayNode arrayNode, String userStoryUUID) {
System.out.println("UUID :"+userStoryUUID);
// String Userstory=getTotalFile(new
// File(baseUrl+arrayNode+"/userStory.html"));
// UserStory userStory=new UserStory(arrayNode, Userstory);
// System.out.println(userStoryUUID);
final File folder = new File(baseUrl + userStoryUUID);
for (final File fileEntry : folder.listFiles()) {// looping the folder
if (fileEntry.isDirectory()) {// tests
ObjectNode objectNode = arrayNode.addObject();
objectNode.put("run",
getTotalFile(new File(baseUrl + userStoryUUID + "/"
+ fileEntry.getName() + "/run.js")));
objectNode.put("runFile",
userStoryUUID + "/" + fileEntry.getName() + "/run.js");
objectNode.put("name", fileEntry.getName());
ArrayNode inputArr = objectNode.putArray("input");
File input = new File(baseUrl + userStoryUUID + "/"
+ fileEntry.getName() + "/input");
System.out.println(baseUrl + userStoryUUID + "/"
+ fileEntry.getName() + "/input");
FilenameFilter removeTilde = new FilenameFilter() {
public boolean accept(File dir, String name) {
String lowercaseName = name.toLowerCase();
if (!lowercaseName.endsWith("~")) {
return true;
} else {
return false;
}
}
};
if (input.exists()) {
File[] files = input.listFiles(removeTilde);
Arrays.sort(files);
for(File inputFile : files) {
System.out.println(inputFile.getName());
inputArr.add(inputFile.getName());
}
}
ArrayNode outputArr = objectNode.putArray("output");
File output = new File(baseUrl + userStoryUUID + "/"
+ fileEntry.getName() + "/output");
if (output.exists()) {
File[] files = output.listFiles(removeTilde);
Arrays.sort(files);
for(File inputFile : files) {
outputArr.add(inputFile.getName());
}
}
}
}
}
static String getTotalFile(File f) {
String sCurrentLine;
String totFile = "";
BufferedReader br;
try {
br = new BufferedReader(new FileReader(f));
while ((sCurrentLine = br.readLine()) != null) {
totFile += sCurrentLine;
}
return totFile;
// userStorys.add(new UserStory(totFile));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return totFile;
}
}